add SHA-based artifact-freshness check (#527)#532
Draft
PolyphonyRequiem wants to merge 1 commit into
Draft
Conversation
Fails CI when artifacts/verb-output-schemas.json drifts from what the current verb annotations would generate. Closes a silent-staleness gap flagged in the 2026-05-28 squad fan-out. Note: this test will be RED until Mozart's [VerbResult] backfill PR (squad/527-verbresult-attrs) lands and regenerates the artifact. That is expected. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
VerbOutputSchemas_ArtifactIsFreshtoVerbCatalogSanityTests— a SHA-based CI gate that fails whenartifacts/verb-output-schemas.jsondrifts from what the current verb annotations would generate.This test will fail until Mozart's
[VerbResult]backfill PR (squad/527-verbresult-attrs) lands and regeneratesartifacts/verb-output-schemas.json. That is expected and documented in the test's XML doc comment. Do not merge this PR tomainuntil Mozart's half is also merged.What this does
VerbOutputSchemaCatalog.Json(the compile-time constant produced by theVerbSchemaGeneratorRoslyn source generator) and compares it against the on-diskartifacts/verb-output-schemas.json.Why SHA-based and not byte-for-byte?
The existing
Catalog_ArtifactFile_ExistsAtRepoRoot_AndMatchesEmbeddedJsontest already does a byte-for-byte comparison. This new test adds a normalized (canonical JSON) comparison layer on top, so that:Files changed
tests/Polyphony.Tests/Annotations/VerbCatalogSanityTests.cs— new test +CanonicalizeJson/SortNode/Sha256HexhelpersPart of #527 (Brahms half)
Mozart's half:
squad/527-verbresult-attrs(backfill[VerbResult]on ~50 command methods and regenerate the artifact).